There are various ways for storing, organizing, or otherwise manipulating large amounts of data. Typically, representations of information are implemented as sets of entities that are related via associations, where entities of a given set share common attributes. Common example of representations of information is relational databases, where a table is a set of entities that have same attributes. Table rows represent entities, table columns represent attributes and tables are related to each other via foreign key associations. Another example is business objects, where a business object represents an entity with certain properties, i.e. attributes, and relates to other business objects.
Usually, subsets of data are retrieved and/or manipulated at a time, as working with an entire data collection at the same time may be unfeasible or inefficient, e.g., for performance reasons, technical limitations and the like. A common approach is using queries based on specific criteria to retrieve subsets of data to be further processed. An alternative approach is using iterators to access one entity at a time, such as a row cursor or an eXtensible Markup Language (XML) node iterator. Usually, the executed queries and the respective result sets retrieved based on the queries are not retained. The relation between a query and a corresponding result set, the execution order of the queries, e.g., the steps of queries execution determining how and in what order result sets are obtained, are not stored. In many cases, there is a need for analyzing result sets by inspecting the execution order of the respective queries.